package com.wonders.hisdoctor.station.project.treat.service;

import com.wonders.hisdoctor.station.project.base.domain.OutpTreatRec;
import com.wonders.hisdoctor.station.project.treat.vo.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;

/**
 * @author zhaogongming
 * @date 2021.2.23 下午 7:41 星期二
 * @desc: 治疗申请_service
 */
public interface ITreatService {

    /**
     * 项目选择_左列表
     * @return List<DeptVo>
     */
    List<DeptVo> queryDept(String hospitalCode);

    /**
     * 项目选择_列表
     *
     * @param hospitalCode 机构代码
     * @param itemName     组合名称
     * @param deptCode     科室编号
     * @return List<ItemListVo>
     */
    List<ItemListVo> itemList(String hospitalCode, String itemName, String deptCode);

    /**
     * 治疗申请_列表
     *
     * @param visitDate 就诊日期
     * @param patientId 病人ID
     * @param visitNo   就诊序号
     * @param empNo     医生编号
     * @return List<OutpTreatRec>
     */
    List<QueryTreatVo> queryTreatList(Date visitDate, String patientId, Integer visitNo, String empNo);

    /**
     * 提交申请_保存
     *
     * @param treatVo 治疗_VO
     * @return Integer
     */
    Integer save(TreatVo treatVo);

    /**
     * 撤销申请_删除
     *
     * @param outpTreatRecs 治疗明细表
     * @return Integer
     */
    Integer delete(List<OutpTreatRec> outpTreatRecs);

    /**
     * 历史申请_查询
     *
     * @param queryHistoryVo 历史申请_VO
     * @return List<OutpTreatRec>
     */
    List<HistoryTreatVo> queryHistory(QueryHistoryVo queryHistoryVo);

    /**
     * 存为套餐_保存
     *
     * @param setMealVo 套餐_VO
     * @return int
     */
    int saveSetMeal(SetMealVo setMealVo);

    /**
     * 治疗申请单_打印
     *
     * @param treatPrintVo 入参
     * @return TreatApplicationFormVo
     */
    List<TreatApplicationFormVo> treatPrint(List<TreatPrintNewVo> treatPrintVo);

    /**
     * 并存并打印
     * @param treatVo
     * @return
     */
    //List<TreatApplicationFormVo> saveAndPrint(TreatVo treatVo, HttpServletRequest request);

    /**
     * 新版：提交申请_保存，加组合名称
     *
     * @param treatVo 治疗_VO
     * @return Integer
     */
    Integer saveNew(TreatVo treatVo);

    /**
     * 并存并打印
     * @param treatVo
     * @return
     */
    List<TreatApplicationFormVo> saveAndPrintNew(TreatVo treatVo, HttpServletRequest request);
}
